package Algorithm;

public class LC19 {
    //双指针找到前驱节点
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode dummyHead=new ListNode(-1);
        dummyHead.next=head;
        ListNode slow=dummyHead;
        ListNode fast=dummyHead;
        for(int i=0;i<=n;i++){
            fast=fast.next;
        }
        while(fast!=null){
            slow=slow.next;
            fast=fast.next;
        }
        slow.next=slow.next.next;
        return dummyHead.next;
    }

    //循环找到待删除节点的前驱结点
//    public ListNode removeNthFromEnd(ListNode head, int n) {
//        int len=0;
//        for(ListNode node=head;node!=null;node=node.next){
//            len++;
//        }
//        ListNode dummyHead=new ListNode(-1);
//        dummyHead.next=head;
//        ListNode prev=dummyHead;
//        for(int i=0;i<len-n;i++){
//            prev=prev.next;
//        }
//        prev.next=prev.next.next;
//
//        return dummyHead.next;
//    }
}
